package interfaces.data;

import interfaces.app.IStream;

/**
 * Handle for sending information between processes.
 * <br/>
 * Created: 11.10.11
 *
 * @author Martin Štulc (<a href="mailto:martin.stulc@gmail.com">martin.stulc@gmail.com</a>)
 * @version 1.0
 */
public interface IHandle
{
    /**
     * Return an array of param.
     *
     * @return the array of params
     */
    String[] getParams();

    /**
     * Return a stream for input.
     *
     * @return the input stream
     */
    IStream getIn();

    /**
     * Return a stream for output.
     *
     * @return the output stream
     */
    IStream getOut();

    /**
     * Return a stream for error output.
     *
     * @return the error output stream
     */
    IStream getErrorOut();

    /**
     * Return a name of command.
     *
     * @return the name of command
     */
    String getCommandName();

    /**
     * Return an actual absolute path in filesystem.
     *
     * @return the actual absolute path in filesystem
     */
    String getActualPath();


    /**
     * Sets new absolute actual path.
     *
     * @param newPath the new absolute actual path
     */
    void setActualPath(String newPath);

    /**
     * Return an account of logged user.
     *
     * @return the account of logged user
     */
    IAccount getAccount();
}
